#include<stdio.h>
 
/* 打印数组元素 */
void print(int nums[],int n) {
	printf("\n");
	for(int i=0; i<n; i++) {
		printf("%d\t",nums[i]);
	}
	printf("\n");
}
 
/* 折半查找法 */
int Bsearch(int R[],int low,int high,int k) {
	int mid;
	while(low<=high) { // 当子表长度大于等于1时进行循环
		mid=(low+high)/2;// 取表中间位置
		if(R[mid]==k) { // 找到后返回元素的位置
			return mid;
		} else if(R[mid]>k) { // 说明R[low,...,mid-1]中查找
			high=mid-1;
		} else { // 说明需要在R[mid+1,...,high]中查找
			low=mid+1;
		}
	}
	return 0;// 若查找不成功返回0
}
 
int main() {
	int nums[]= {1,2,3,4,5,6,7,8,9};
	int n=9;// nums数组的长度
	print(nums,n);
 
	/* 查找 */
	int key=2;
	int r=Bsearch(nums,0,n-1,key);
	printf("查找结果（成功返回下标，失败返回-1）：%d",r);
 
	return 0;
}